1. Field of the Invention
The invention relates generally to computer program communications using a client/server paradigm and more specifically relates to methods and structures for utilizing in a client program dynamically obtained service capabilities of a server.
2. Discussion of Related Art
In printing environments, it is common for a printing application to utilize services of a print server generate printed output for a print job. In such environments, the printing application may act in the role of a client program that requests services from a server program. The client and server programs may reside and operate in different computing devices coupled via a network or may reside and operate within a common computing device. In client/server computing paradigms, a client program generally requests a service from a server program and the two programs exchange information to effectuate the requested service.
For example, in printing environments, the client application program may generate a document to be printed and forward the document to be printed to a print server program requesting that the print server provide the services of formatting, layout, and rendering of the provided document generated by the client application program. The client application program may generate a so-called “job ticket” indicating various options and preferences for the print job to be processed by the print server. The job ticket is generally created by the client program interacting with a user or application program interface to select desired options from a set of available options and settings provided by the server program (i.e., “available services” provided by the server program). For example, a job ticket may be defined by the client application program to indicate which print data file is to be printed (e.g., the document to be printed) as well as indications of a desire to print the document in duplex (two sided) form, on letter size paper, utilizing full color imaging (as distinct from mere black-and-white printing), etc. These and other exemplary options may be selected by a user or by the client application program from a list of available options/services. The list of available options is typically encoded in a table or file often referred to as a “device capabilities” file (or simply “DevCap file”). The device capabilities file may be more generally referred to as a “service capabilities” file where the client/server interaction is more generally referring to any optional services provided by a particular server computing device.
In present client/server computation models, the client and server programs must be designed in a cooperative manner such that the client is aware of all service capabilities available from the server program. If the server program is modified to change, add, or subtract a particular service, the cooperating client program must be similarly modified to enable a user of the client program to alter its utilization of a changed service, to utilize the newly added service, or to cease utilization of a removed service. Where the client and server programs are both provided by a software vendor, the vendor is burdened with updating and distributing the client program to a potentially large number of users. Where the client program is a customized application, the customized application designer/user may be burdened with modifying the client program to account for the changes in the server program. Regardless of where the client program maintenance burden falls, present client/server computation models require the redesign/modification of client programs to match the services provided by the corresponding server program. Such a requirement for periodic redesign or modification of the client program gives rise to numerous problems for re-testing and re-distributing a modified client program.
Thus, it is an ongoing challenge to reduce the burden and potential for errors in maintaining client programs to be compatible with services provided by corresponding server programs.